//
//  XBStaticLink.h
//  数据结构算法和笔试题
//
//  Created by Ceasar on 16/6/2.
//  Copyright © 2016年 xiaobai. All rights reserved.
//

#ifndef XBStaticLink_h
#define XBStaticLink_h

#include <stdio.h>
#include "BaseMsg.h"

/**
 * 链表静态实现：用数组模拟链表
 */

typedef struct
{
    DATATYPE data;//当前节点的数据
    int nextIdx ;//下一个节点的在数组中的索引
}Component,XBStaticLinkList[MAX_SIZE];


/**
 *  数组的第一个元素的nextIdx用来保存 备用链表的第一个节点的下标
 
    数组的最后一个元素的nextIdx存放第一个插入的元素的下标，相当于头节点
 */

void initXBStaticList(XBStaticLinkList sList);

int isXBLinkStaticEmpty(XBStaticLinkList sList);

int addItemToXBStaticLinkList(XBStaticLinkList  sList,DATATYPE obj);

void clearXBStaticLinkList(XBStaticLinkList  sList);

int getItemFromXBStaticLinkListByIndex(XBStaticLinkList LinkListHeader,int idx,DATATYPE * obj);

int findItemInXBStaticLinkList(XBStaticLinkList sList,DATATYPE obj);

int insertItemInXBStaticLinkList(XBStaticLinkList sList,int idx,DATATYPE obj);

int deleteItemInXBStaticLinkList(XBStaticLinkList sList,int idx);

int getLengthForXBStaticLinkList(XBStaticLinkList sList);

void printXBStaticLinkList(XBStaticLinkList sList);

int replaceXBStaticLinkList(XBStaticLinkList sList,int idx,DATATYPE obj);

#endif /* XBStaticLink_h */
